package com.itheima.dubbo.mysql.impl;


import com.alibaba.dubbo.config.annotation.Service;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.commons.pojo.domain.QuestionnaireReport;
import com.itheima.dubbo.interfaces.QuestionNaireReportApi;
import com.itheima.dubbo.mysql.mapper.QuestionNaireReportMapper;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

@Service
public class QuestionNaireReportApiImpl implements QuestionNaireReportApi {
    @Autowired
    QuestionNaireReportMapper questionNaireReportMapper;

    @Override
    public List<QuestionnaireReport> findAllReport(Long userId) {
        return questionNaireReportMapper.selectList(Wrappers.lambdaQuery(QuestionnaireReport.class)
                .eq(QuestionnaireReport::getUserId, userId)
        );
    }

    @Override
    public QuestionnaireReport findOneReport(Long userId) {
        return questionNaireReportMapper.selectOne(Wrappers.lambdaQuery(QuestionnaireReport.class)
                .eq(QuestionnaireReport::getUserId, userId)
        );
    }

    @Override
    public void add(QuestionnaireReport questionnaireReport) {
        questionNaireReportMapper.insert(questionnaireReport);
    }

    @Override
    public List<QuestionnaireReport> findAllUserInFo() {
        return questionNaireReportMapper.selectList(Wrappers.lambdaQuery(QuestionnaireReport.class));
    }

    @Override
    public QuestionnaireReport findAllReportById(String id) {
        return questionNaireReportMapper.selectOne(Wrappers.lambdaQuery(QuestionnaireReport.class)
                .eq(QuestionnaireReport::getId, id)
        );
    }

    @Override
    public List<QuestionnaireReport> findAllReportByUserId(Long userId) {
        return questionNaireReportMapper.selectList(Wrappers.lambdaQuery(QuestionnaireReport.class)

                .eq(QuestionnaireReport::getUserId, userId));
    }

    /**
     * 查询10条相识
     *
     * @param userId
     * @param conclusion
     * @return
     */
    @Override
    public List<QuestionnaireReport> querySimilarYou(Long userId, String conclusion) {
        Page<QuestionnaireReport> questionnaireReportPage = questionNaireReportMapper.selectPage(new Page<>(1, 10),
                Wrappers.lambdaQuery(QuestionnaireReport.class)
                        .eq(QuestionnaireReport::getConclusion, conclusion)
                        .notIn(QuestionnaireReport::getUserId, userId));
        return questionnaireReportPage.getRecords();
    }

    /**
     * 获取用户当前的报告
     *
     * @param userId
     * @return
     */
    @Override
    public QuestionnaireReport queryCurrentReport(Long userId) {
        return questionNaireReportMapper.selectOne(Wrappers.lambdaQuery(QuestionnaireReport.class)
                .eq(QuestionnaireReport::getUserId, userId)
                .orderByDesc(QuestionnaireReport::getCreated));
    }
}
